// // exports.AL_Framework_Update_Item = exports.UpdateHandler = void 0;
// // var $update = require("./AL_Framework_Update");
// // var n = (function () {
// //     function e() {
// //         this.delegate = null;
// //     }
// //     e.prototype.chuliFaXianXinBanbenBeifaxian = function (e) {
// //         if (this.delegate && this.delegate.chuliFaXianXinBanbenBeifaxian) {
// //             this.delegate.chuliFaXianXinBanbenBeifaxian(e);
// //         }
// //     };
// //     e.prototype.on_Update_Failed = function (e) {
// //         if (this.delegate && this.delegate.on_Update_Failed) {
// //             this.delegate.on_Update_Failed(e);
// //         }
// //     };
// //     e.prototype.on_Pre_Version_Failed = function (e, t) {
// //         if (this.delegate && this.delegate.on_Pre_Version_Failed) {
// //             this.delegate.on_Pre_Version_Failed(e, t);
// //         }
// //     };
// //     e.prototype.on_Show_Updating = function (e) {
// //         if (this.delegate && this.delegate.on_Show_Updating) {
// //             this.delegate.on_Show_Updating(e);
// //         }
// //     };
// //     e.prototype.on_Need_Update_Main = function (e) {
// //         if (this.delegate && this.delegate.on_Need_Update_Main) {
// //             this.delegate.on_Need_Update_Main(e);
// //         }
// //     };
// //     e.prototype.on_Other = function (e) {
// //         if (this.delegate && this.delegate.on_Other) {
// //             this.delegate.on_Other(e);
// //         }
// //     };
// //     e.prototype.on_Downloading = function (e, t) {
// //         if (this.delegate && this.delegate.on_Downloading) {
// //             this.delegate.on_Downloading(e, t);
// //         }
// //     };
// //     e.prototype.on_Aready_Up_To_Data = function (e) {
// //         if (this.delegate && this.delegate.on_Aready_Up_To_Data) {
// //             this.delegate.on_Aready_Up_To_Data(e);
// //         }
// //     };
// //     e.prototype.on_Download_Complete = function (e) {
// //         if (this.delegate && this.delegate.on_Download_Complete) {
// //             this.delegate.on_Download_Complete(e);
// //         }
// //     };
// //     e.prototype.on_Try_Download_Failed_Assets = function (e) {
// //         if (this.delegate && this.delegate.on_Try_Download_Failed_Assets) {
// //             this.delegate.on_Try_Download_Failed_Assets(e);
// //         }
// //     };
// //     e.prototype.on_Start_Check_Update = function (e) {
// //         if (this.delegate && this.delegate.on_Start_Check_Update) {
// //             this.delegate.on_Start_Check_Update(e);
// //         }
// //     };
// //     e.prototype.on_Start_Load_Bundle = function (e) {
// //         if (this.delegate && this.delegate.on_Start_Load_Bundle) {
// //             this.delegate.on_Start_Load_Bundle(e);
// //         }
// //     };
// //     e.prototype.on_Load_Bundle_Error = function (e, t) {
// //         if (this.delegate && this.delegate.on_Load_Bundle_Error) {
// //             this.delegate.on_Load_Bundle_Error(e, t);
// //         }
// //     };
// //     e.prototype.on_Load_Bundle_Complete = function (e) {
// //         if (this.delegate && this.delegate.on_Load_Bundle_Complete) {
// //             this.delegate.on_Load_Bundle_Complete(e);
// //         }
// //     };
// //     e.prototype.chuli_jiazai_ziyuanbao = function (e) {
// //         if (this.delegate && this.delegate.chuli_jiazai_ziyuanbao) {
// //             this.delegate.chuli_jiazai_ziyuanbao(e);
// //         }
// //     };
// //     return e;
// // })();
// // exports.UpdateHandler = n;
// // var a = (function () {
// //     function e(e, t) {
// //         this.name = "";
// //         this.bundle = "";
// //         this.id = "";
// //         this.handler = new n();
// //         this.starScene = "";
// //         this.node = null;
// //         this.orientation = !1;
// //         this.userData = null;
// //         this.assetsManager = null;
// //         this.code = $update.AL_Framework_Update.Code.UNINITED;
// //         this.state = $update.AL_Framework_Update.State.UNINITED;
// //         this.isUpdating = !1;
// //         if (null != t) {
// //             this.handler.delegate = t;
// //         }
// //         this.name = e.name;
// //         this.bundle = e.bundle;
// //         this.id = e.id;
// //         this.starScene = e.starScene;
// //         this.node = e.node;
// //         this.orientation = e.orientation;
// //     }
// //     Object.defineProperty(e.prototype, "updateName", {
// //         get: function () {
// //             return this.assetsManager.name;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     e.prototype.convert_Bundle = function (e) {
// //         return Manager.updateManager.convert_Bundle(e);
// //     };
// //     e.prototype.get_Project_String = function () {
// //         return Manager.updateManager.get_Project_String(this.bundle);
// //     };
// //     e.prototype.checkUpdate = function () {
// //         this.handler.on_Start_Check_Update(this);
// //         this.check_Bundle_Update();
// //     };
// //     Object.defineProperty(e.prototype, "isMain", {
// //         get: function () {
// //             return this.assetsManager.name == $update.AL_Framework_Update.MAIN_PACK;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "isGameHome", {
// //         get: function () {
// //             return this.assetsManager.name.indexOf($update.AL_Framework_Update.GAME_HOME_PACK) > -1;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "remoteMd5", {
// //         get: function () {
// //             return this.assetsManager.manager.getRemoteManifest().getMd5();
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "storagePath", {
// //         get: function () {
// //             return Manager.updateManager.storagePath;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "hotUpdateUrl", {
// //         get: function () {
// //             return Manager.updateManager.hotUpdateUrl;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "hotUpdateUrlVersion", {
// //         get: function () {
// //             return Manager.updateManager.hotUpdateUrlVersion;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     e.prototype.check_Bundle_Update = function () {
// //         this.assetsManager = Manager.updateManager.get_Assets_Manager(this);
// //         var e = this.get_Project_String();
// //         if (e) {
// //             var t = new jsb.Manifest(e, this.storagePath, this.hotUpdateUrl);
// //             console.log(this.bundle + " --存在本地版本控制文件checkUpdate--");
// //             this.assetsManager.manager.loadLocalManifest(t, "");
// //             this._check_Update();
// //         } else {
// //             if (this.isUpdating) {
// //                 console.log(this.bundle + " Checking or updating...");
// //                 return void this.handler.on_Show_Updating(this);
// //             }
// //             var o = {
// //                 version: "0",
// //                 bundle: this.convert_Bundle(this.bundle),
// //                 md5: "UNKNOWN"
// //             };
// //             var i = JSON.stringify(o);
// //             t = new jsb.Manifest(i, this.storagePath, this.hotUpdateUrl);
// //             console.log(this.bundle + " --checkUpdate--");
// //             console.log(this.bundle + " mainifest content : " + i);
// //             this.assetsManager.manager.loadLocalManifest(t, "");
// //             this._check_Update();
// //         }
// //     };
// //     e.prototype._check_Update = function () {
// //         console.log(this.bundle + " --checkUpdate--");
// //         return this.isUpdating
// //             ? (console.log(this.bundle + " Checking or updating..."), void this.handler.on_Show_Updating(this))
// //             : this.assetsManager.manager.getLocalManifest() && this.assetsManager.manager.getLocalManifest().isLoaded()
// //             ? void (this.is_Try_Download_Failed_Assets()
// //                   ? (console.log(this.bundle + " 之前下载资源未完全下载完成，请尝试重新下载"),
// //                     (this.code = $update.AL_Framework_Update.Code.UPDATE_FAILED),
// //                     (this.state = $update.AL_Framework_Update.State.TRY_DOWNLOAD_FAILED_ASSETS),
// //                     this.handler.on_Try_Download_Failed_Assets(this))
// //                   : ((this.isUpdating = !0),
// //                     this.assetsManager.manager.setEventCallback(this.check_Cb.bind(this)),
// //                     this.assetsManager.manager.checkUpdate()))
// //             : (console.log(this.bundle + " Failed to load local manifest ...."),
// //               (this.code = $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST),
// //               (this.state = $update.AL_Framework_Update.State.FAIL_TO_UPDATE),
// //               void this.handler.on_Update_Failed(this));
// //     };
// //     e.prototype.is_Try_Download_Failed_Assets = function () {
// //         return this.assetsManager.manager.getState() == $update.AL_Framework_Update.State.FAIL_TO_UPDATE;
// //     };
// //     e.prototype.check_Cb = function (e) {
// //         this.assetsManager.code = e.getEventCode();
// //         console.log(
// //             this.bundle +
// //                 " check_Cb event code : " +
// //                 e.getEventCode() +
// //                 " state : " +
// //                 this.assetsManager.manager.getState()
// //         );
// //         var t = e.getEventCode();
// //         switch (e.getEventCode()) {
// //             case $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST:
// //                 console.log(this.bundle + " No local manifest file found, hot update skipped.");
// //                 break;
// //             case $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST:
// //             case $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST:
// //                 console.log(this.bundle + " Fail to download manifest file, hot update skipped.");
// //                 break;
// //             case $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE:
// //                 console.log(this.bundle + " Already up to date with the latest remote version.");
// //                 if (this.isGameHome) {
// //                     Manager.updateManager.save_Pre_Versions();
// //                 }
// //                 break;
// //             case $update.AL_Framework_Update.Code.NEW_VERSION_FOUND:
// //                 console.log(this.bundle + " New version found, please try to update.");
// //                 if (!this.isGameHome) {
// //                     t = Manager.updateManager.check_Allow_Update(this, t);
// //                 }
// //                 break;
// //             default:
// //                 return;
// //         }
// //         this.isUpdating = !1;
// //         this.assetsManager.code = t;
// //         t == $update.AL_Framework_Update.Code.NEW_VERSION_FOUND
// //             ? this.handler.chuliFaXianXinBanbenBeifaxian(this)
// //             : t == $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE
// //             ? this.handler.on_Aready_Up_To_Data(this)
// //             : t == $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST ||
// //               t == $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST ||
// //               t == $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST
// //             ? this.handler.on_Update_Failed(this)
// //             : t == $update.AL_Framework_Update.Code.MAIN_PACK_NEED_UPDATE || t == $update.AL_Framework_Update.Code.PRE_VERSIONS_NOT_FOUND
// //             ? this.handler.on_Need_Update_Main(this)
// //             : this.handler.on_Other(this);
// //     };
// //     e.prototype.downloadFailedAssets = function () {
// //         if (this.assetsManager) {
// //             this.assetsManager.manager.downloadFailedAssets();
// //         }
// //     };
// //     e.prototype.do_Update = function () {
// //         console.log(this.bundle + " 即将热更新, updating : " + this.isUpdating);
// //         if (!this.isUpdating) {
// //             console.log(this.bundle + " 执行更新 ");
// //             this.assetsManager.manager.setEventCallback(this.update_Cb.bind(this));
// //             this.assetsManager.manager.update();
// //         }
// //     };
// //     e.prototype.update_Cb = function (e) {
// //         var t = !1;
// //         var o = !1;
// //         console.log(
// //             this.bundle +
// //                 " --update cb code : " +
// //                 e.getEventCode() +
// //                 " state : " +
// //                 this.assetsManager.manager.getState()
// //         );
// //         this.assetsManager.code = e.getEventCode();
// //         switch (this.assetsManager.code) {
// //             case $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST:
// //                 console.log(this.bundle + " No local manifest file found, hot update skipped.");
// //                 o = !0;
// //                 break;
// //             case $update.AL_Framework_Update.Code.UPDATE_PROGRESSION:
// //                 console.log(this.bundle + " " + e.getDownloadedBytes() + " / " + e.getTotalBytes());
// //                 console.log(this.bundle + " " + e.getDownloadedFiles() + " / " + e.getTotalFiles());
// //                 console.log(this.bundle + " percent : " + e.getPercent());
// //                 console.log(this.bundle + " percent by file : " + e.getPercentByFile());
// //                 console.log(this.bundle + " assetId : " + e.getAssetId());
// //                 var n = e.getMessage();
// //                 if (n) {
// //                     console.log(this.bundle + " Updated file: " + n);
// //                 }
// //                 break;
// //             case $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST:
// //             case $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST:
// //                 console.log(this.bundle + " Fail to download manifest file, hot update skipped.");
// //                 o = !0;
// //                 break;
// //             case $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE:
// //                 console.log(this.bundle + " Already up to date with the latest remote version");
// //                 o = !0;
// //                 if (this.isGameHome) {
// //                     Manager.updateManager.save_Pre_Versions();
// //                 }
// //                 break;
// //             case $update.AL_Framework_Update.Code.UPDATE_FINISHED:
// //                 console.log(this.bundle + " AL_Framework_Update finished. " + e.getMessage());
// //                 t = !0;
// //                 if (this.isGameHome) {
// //                     Manager.updateManager.save_Pre_Versions();
// //                 }
// //                 break;
// //             case $update.AL_Framework_Update.Code.UPDATE_FAILED:
// //                 console.log(this.bundle + " AL_Framework_Update failed. " + e.getMessage());
// //                 break;
// //             case $update.AL_Framework_Update.Code.ERROR_UPDATING:
// //                 console.log(this.bundle + " Asset update error: " + e.getAssetId() + " , " + e.getMessage());
// //                 break;
// //             case $update.AL_Framework_Update.Code.ERROR_DECOMPRESS:
// //                 console.log(this.bundle + " " + e.getMessage());
// //         }
// //         if (o) {
// //             this.assetsManager.manager.setEventCallback(null);
// //         }
// //         if (t) {
// //             var a = jsb.fileUtils.getSearchPaths();
// //             var s = this.assetsManager.manager.getLocalManifest().getSearchPaths();
// //             console.log(JSON.stringify(s));
// //             Array.prototype.unshift.apply(a, s);
// //             var r = {};
// //             for (var c = 0; c < a.length; c++) {
// //                 r[a[c]] = !0;
// //             }
// //             a = Object.keys(r);
// //             cc.sys.localStorage.setItem("HotUpdateSearchPaths", JSON.stringify(a));
// //             jsb.fileUtils.setSearchPaths(a);
// //         }
// //         var l = !1;
// //         this.isMain
// //             ? t &&
// //               (this.assetsManager.manager.setEventCallback(null),
// //               e.getDownloadedFiles() > 0
// //                   ? (console.log(this.bundle + " 主包更新完成，有下载文件，需要重启更新"), cc.game.restart(), (l = !0))
// //                   : (console.log(this.bundle + " 主包更新完成，写入远程版本信息到本地"),
// //                     jsb.fileUtils.purgeCachedEntries(),
// //                     Manager.updateManager.rest_Assets_Manager(this.updateName)))
// //             : t &&
// //               (console.log(this.bundle + " 下载资源数 : " + e.getDownloadedFiles()),
// //               jsb.fileUtils.purgeCachedEntries(),
// //               Manager.updateManager.rest_Assets_Manager(this.updateName));
// //         if (this.assetsManager.code != $update.AL_Framework_Update.Code.UPDATE_PROGRESSION) {
// //             this.isUpdating = !1;
// //         }
// //         var d = {
// //             downloadedBytes: e.getDownloadedBytes(),
// //             totalBytes: e.getTotalBytes(),
// //             downloadedFiles: e.getDownloadedFiles(),
// //             totalFiles: e.getTotalFiles(),
// //             percent: e.getPercent(),
// //             percentByFile: e.getPercentByFile(),
// //             code: e.getEventCode(),
// //             state: this.assetsManager.manager.getState(),
// //             needRestart: t,
// //             bundle: this.bundle,
// //             assetId: e.getAssetId(),
// //             progress: 0
// //         };
// //         d.code == $update.AL_Framework_Update.Code.UPDATE_FINISHED
// //             ? ((d.progress = 1.1), this.handler.on_Downloading(this, d))
// //             : d.code == $update.AL_Framework_Update.Code.UPDATE_PROGRESSION
// //             ? ((d.progress = d.percent == Number.NaN ? 0 : d.percent), this.handler.on_Downloading(this, d))
// //             : d.code == $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE
// //             ? ((d.progress = 1), this.handler.on_Downloading(this, d))
// //             : (d.code != $update.AL_Framework_Update.Code.UPDATE_FAILED &&
// //                   d.code != $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST &&
// //                   d.code != $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST &&
// //                   d.code != $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST &&
// //                   d.code != $update.AL_Framework_Update.Code.ERROR_DECOMPRESS) ||
// //               ((d.progress = -1), console.log("更新" + this.name + "失败"), this.handler.on_Update_Failed(this));
// //         if (t) {
// //             if (!l) {
// //                 this.handler.on_Download_Complete(this);
// //                 console.log("更新" + this.name + "成功");
// //             }
// //         }
// //         console.log(
// //             this.bundle +
// //                 " update cb  failed : " +
// //                 o +
// //                 "  , isRestartApp: " +
// //                 l +
// //                 " isUpdateFinished : " +
// //                 t +
// //                 " , updating : " +
// //                 this.isUpdating
// //         );
// //     };
// //     return e;
// // })();
// // exports.AL_Framework_Update_Item = a;


// exports.AL_Framework_Update_Item = exports.UpdateHandler = void 0;
// const $update = require("./AL_Framework_Update");

// /** 更新处理器类 */
// class UpdateHandler {
//     constructor() {
//         /** 代理对象 */
//         this.delegate = null;
//     }

//     /** 处理发现新版本事件 */
//     chuliFaXianXinBanbenBeifaxian(event) {
//         if (this.delegate?.chuliFaXianXinBanbenBeifaxian) {
//             this.delegate.chuliFaXianXinBanbenBeifaxian(event);
//         }
//     }

//     /** 处理更新失败事件 */
//     on_Update_Failed(event) {
//         if (this.delegate?.on_Update_Failed) {
//             this.delegate.on_Update_Failed(event);
//         }
//     }

//     /** 处理预版本失败事件 */
//     on_Pre_Version_Failed(event, type) {
//         if (this.delegate?.on_Pre_Version_Failed) {
//             this.delegate.on_Pre_Version_Failed(event, type);
//         }
//     }

//     /** 处理显示更新中事件 */
//     on_Show_Updating(event) {
//         if (this.delegate?.on_Show_Updating) {
//             this.delegate.on_Show_Updating(event);
//         }
//     }

//     /** 处理需要更新主包事件 */
//     on_Need_Update_Main(event) {
//         if (this.delegate?.on_Need_Update_Main) {
//             this.delegate.on_Need_Update_Main(event);
//         }
//     }

//     /** 处理其他事件 */
//     on_Other(event) {
//         if (this.delegate?.on_Other) {
//             this.delegate.on_Other(event);
//         }
//     }

//     /** 处理下载中事件 */
//     on_Downloading(event, type) {
//         if (this.delegate?.on_Downloading) {
//             this.delegate.on_Downloading(event, type);
//         }
//     }

//     /** 处理已达到最新版本事件 */
//     on_Aready_Up_To_Data(event) {
//         if (this.delegate?.on_Aready_Up_To_Data) {
//             this.delegate.on_Aready_Up_To_Data(event);
//         }
//     }

//     /** 处理下载完成事件 */
//     on_Download_Complete(event) {
//         if (this.delegate?.on_Download_Complete) {
//             this.delegate.on_Download_Complete(event);
//         }
//     }

//     /** 处理尝试下载失败的资源事件 */
//     on_Try_Download_Failed_Assets(event) {
//         if (this.delegate?.on_Try_Download_Failed_Assets) {
//             this.delegate.on_Try_Download_Failed_Assets(event);
//         }
//     }

//     /** 处理开始检查更新事件 */
//     on_Start_Check_Update(event) {
//         if (this.delegate?.on_Start_Check_Update) {
//             this.delegate.on_Start_Check_Update(event);
//         }
//     }

//     /** 处理开始加载包事件 */
//     on_Start_Load_Bundle(event) {
//         if (this.delegate?.on_Start_Load_Bundle) {
//             this.delegate.on_Start_Load_Bundle(event);
//         }
//     }

//     /** 处理加载包错误事件 */
//     on_Load_Bundle_Error(event, type) {
//         if (this.delegate?.on_Load_Bundle_Error) {
//             this.delegate.on_Load_Bundle_Error(event, type);
//         }
//     }

//     /** 处理加载包完成事件 */
//     on_Load_Bundle_Complete(event) {
//         if (this.delegate?.on_Load_Bundle_Complete) {
//             this.delegate.on_Load_Bundle_Complete(event);
//         }
//     }

//     /** 处理加载包事件 */
//     chuli_jiazai_ziyuanbao(event) {
//         if (this.delegate?.chuli_jiazai_ziyuanbao) {
//             this.delegate.chuli_jiazai_ziyuanbao(event);
//         }
//     }
// }
// exports.UpdateHandler = UpdateHandler;

// /** 更新项类 */
// class AL_Framework_Update_Item {
//     constructor(config, handlerDelegate) {
//         /** 名称 */
//         this.name = "";
//         /** 包名 */
//         this.bundle = "";
//         /** ID */
//         this.id = "";
//         /** 处理器 */
//         this.handler = new UpdateHandler();
//         /** 起始场景 */
//         this.starScene = "";
//         /** 节点 */
//         this.node = null;
//         /** 方向 */
//         this.orientation = false;
//         /** 用户数据 */
//         this.userData = null;
//         /** 资源管理器 */
//         this.assetsManager = null;
//         /** 更新代码 */
//         this.code = $update.AL_Framework_Update.Code.UNINITED;
//         /** 更新状态 */
//         this.state = $update.AL_Framework_Update.State.UNINITED;
//         /** 是否更新中 */
//         this.isUpdating = false;

//         if (handlerDelegate) {
//             this.handler.delegate = handlerDelegate;
//         }

//         this.name = config.name;
//         this.bundle = config.bundle;
//         this.id = config.id;
//         this.starScene = config.starScene;
//         this.node = config.node;
//         this.orientation = config.orientation;
//     }

//     /** 获取更新名称 */
//     get updateName() {
//         return this.assetsManager.name;
//     }

//     /** 转换包 */
//     convert_Bundle(bundleName) {
//         return Manager.updateManager.convert_Bundle(bundleName);
//     }

//     /** 获取项目字符串 */
//     get_Project_String() {
//         return Manager.updateManager.get_Project_String(this.bundle);
//     }

//     /** 检查更新 */
//     checkUpdate() {
//         this.handler.on_Start_Check_Update(this);
//         this.check_Bundle_Update();
//     }

//     /** 是否为主包 */
//     get isMain() {
//         return this.assetsManager.name === $update.AL_Framework_Update.MAIN_PACK;
//     }

//     /** 是否为游戏主页 */
//     get isGameHome() {
//         return this.assetsManager.name.includes($update.AL_Framework_Update.GAME_HOME_PACK);
//     }

//     /** 获取远程MD5 */
//     get remoteMd5() {
//         return this.assetsManager.manager.getRemoteManifest().getMd5();
//     }

//     /** 获取存储路径 */
//     get storagePath() {
//         return Manager.updateManager.storagePath;
//     }

//     /** 获取热更新URL */
//     get hotUpdateUrl() {
//         return Manager.updateManager.hotUpdateUrl;
//     }

//     /** 获取热更新URL版本 */
//     get hotUpdateUrlVersion() {
//         return Manager.updateManager.hotUpdateUrlVersion;
//     }

//     /** 检查包更新 */
//     check_Bundle_Update() {
//         this.assetsManager = Manager.updateManager.get_Assets_Manager(this);
//         const projectString = this.get_Project_String();

//         if (projectString) {
//             const manifest = new jsb.Manifest(projectString, this.storagePath, this.hotUpdateUrl);
//             console.log(`${this.bundle} --存在本地版本控制文件checkUpdate--`);
//             this.assetsManager.manager.loadLocalManifest(manifest, "");
//             this._check_Update();
//         } else {
//             if (this.isUpdating) {
//                 console.log(`${this.bundle} Checking or updating...`);
//                 this.handler.on_Show_Updating(this);
//                 return;
//             }
//             const manifestInfo = {
//                 version: "0",
//                 bundle: this.convert_Bundle(this.bundle),
//                 md5: "UNKNOWN"
//             };
//             const manifestString = JSON.stringify(manifestInfo);
//             const manifest = new jsb.Manifest(manifestString, this.storagePath, this.hotUpdateUrl);
//             console.log(`${this.bundle} --checkUpdate--`);
//             console.log(`${this.bundle} manifest content: ${manifestString}`);
//             this.assetsManager.manager.loadLocalManifest(manifest, "");
//             this._check_Update();
//         }
//     }

//     /** 内部检查更新 */
//     _check_Update() {
//         console.log(`${this.bundle} --checkUpdate--`);

//         if (this.isUpdating) {
//             console.log(`${this.bundle} Checking or updating...`);
//             this.handler.on_Show_Updating(this);
//             return;
//         }

//         if (this.assetsManager.manager.getLocalManifest()?.isLoaded()) {
//             if (this.is_Try_Download_Failed_Assets()) {
//                 console.log(`${this.bundle} 之前下载资源未完全下载完成，请尝试重新下载`);
//                 this.code = $update.AL_Framework_Update.Code.UPDATE_FAILED;
//                 this.state = $update.AL_Framework_Update.State.TRY_DOWNLOAD_FAILED_ASSETS;
//                 this.handler.on_Try_Download_Failed_Assets(this);
//             } else {
//                 this.isUpdating = true;
//                 this.assetsManager.manager.setEventCallback(this.check_Cb.bind(this));
//                 this.assetsManager.manager.checkUpdate();
//             }
//         } else {
//             console.log(`${this.bundle} Failed to load local manifest ....`);
//             this.code = $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST;
//             this.state = $update.AL_Framework_Update.State.FAIL_TO_UPDATE;
//             this.handler.on_Update_Failed(this);
//         }
//     }

//     /** 是否尝试下载失败的资源 */
//     is_Try_Download_Failed_Assets() {
//         return this.assetsManager.manager.getState() === $update.AL_Framework_Update.State.FAIL_TO_UPDATE;
//     }

//     /** 检查回调 */
//     check_Cb(event) {
//         this.assetsManager.code = event.getEventCode();
//         console.log(`${this.bundle} check_Cb event code: ${event.getEventCode()} state: ${this.assetsManager.manager.getState()}`);

//         let eventCode = event.getEventCode();

//         switch (eventCode) {
//             case $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST:
//                 console.log(`${this.bundle} No local manifest file found, hot update skipped.`);
//                 break;
//             case $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST:
//             case $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST:
//                 console.log(`${this.bundle} Fail to download manifest file, hot update skipped.`);
//                 break;
//             case $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE:
//                 console.log(`${this.bundle} Already up to date with the latest remote version.`);
//                 if (this.isGameHome) {
//                     Manager.updateManager.save_Pre_Versions();
//                 }
//                 break;
//             case $update.AL_Framework_Update.Code.NEW_VERSION_FOUND:
//                 console.log(`${this.bundle} New version found, please try to update.`);
//                 if (!this.isGameHome) {
//                     eventCode = Manager.updateManager.check_Allow_Update(this, eventCode);
//                 }
//                 break;
//             default:
//                 return;
//         }

//         this.isUpdating = false;
//         this.assetsManager.code = eventCode;
//         this._handleUpdateResult(eventCode);
//     }

//     /** 处理更新结果 */
//     _handleUpdateResult(eventCode) {
//         if (eventCode === $update.AL_Framework_Update.Code.NEW_VERSION_FOUND) {
//             this.handler.chuliFaXianXinBanbenBeifaxian(this);
//         } else if (eventCode === $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE) {
//             this.handler.on_Aready_Up_To_Data(this);
//         } else if (eventCode === $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST ||
//                    eventCode === $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST ||
//                    eventCode === $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST) {
//             this.handler.on_Update_Failed(this);
//         } else if (eventCode === $update.AL_Framework_Update.Code.MAIN_PACK_NEED_UPDATE || 
//                    eventCode === $update.AL_Framework_Update.Code.PRE_VERSIONS_NOT_FOUND) {
//             this.handler.on_Need_Update_Main(this);
//         } else {
//             this.handler.on_Other(this);
//         }
//     }

//     /** 下载失败的资源 */
//     downloadFailedAssets() {
//         if (this.assetsManager) {
//             this.assetsManager.manager.downloadFailedAssets();
//         }
//     }

//     /** 执行更新 */
//     do_Update() {
//         console.log(`${this.bundle} 即将热更新, updating: ${this.isUpdating}`);
//         if (!this.isUpdating) {
//             console.log(`${this.bundle} 执行更新`);
//             this.assetsManager.manager.setEventCallback(this.update_Cb.bind(this));
//             this.assetsManager.manager.update();
//         }
//     }

//     /** 更新回调 */
//     update_Cb(event) {
//         let needRestart = false;
//         let updateFinished = false;
//         console.log(`${this.bundle} --update cb code: ${event.getEventCode()} state: ${this.assetsManager.manager.getState()}`);
//         this.assetsManager.code = event.getEventCode();

//         switch (this.assetsManager.code) {
//             case $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST:
//                 console.log(`${this.bundle} No local manifest file found, hot update skipped.`);
//                 needRestart = true;
//                 break;
//             case $update.AL_Framework_Update.Code.UPDATE_PROGRESSION:
//                 console.log(`${this.bundle} ${event.getDownloadedBytes()} / ${event.getTotalBytes()}`);
//                 console.log(`${this.bundle} ${event.getDownloadedFiles()} / ${event.getTotalFiles()}`);
//                 break;
//             case $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST:
//             case $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST:
//                 console.log(`${this.bundle} Fail to download manifest file, hot update skipped.`);
//                 needRestart = true;
//                 break;
//             case $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE:
//                 console.log(`${this.bundle} Already up to date with the latest remote version`);
//                 if (this.isGameHome) {
//                     Manager.updateManager.save_Pre_Versions();
//                 }
//                 needRestart = true;
//                 break;
//             case $update.AL_Framework_Update.Code.UPDATE_FINISHED:
//                 console.log(`${this.bundle} AL_Framework_Update finished. ${event.getMessage()}`);
//                 updateFinished = true;
//                 if (this.isGameHome) {
//                     Manager.updateManager.save_Pre_Versions();
//                 }
//                 break;
//             case $update.AL_Framework_Update.Code.UPDATE_FAILED:
//                 console.log(`${this.bundle} AL_Framework_Update failed. ${event.getMessage()}`);
//                 break;
//             case $update.AL_Framework_Update.Code.ERROR_UPDATING:
//                 console.log(`${this.bundle} Asset update error: ${event.getAssetId()} , ${event.getMessage()}`);
//                 break;
//             case $update.AL_Framework_Update.Code.ERROR_DECOMPRESS:
//                 console.log(`${this.bundle} ${event.getMessage()}`);
//                 break;
//         }

//         if (needRestart) {
//             this.assetsManager.manager.setEventCallback(null);
//         }

//         if (updateFinished) {
//             const searchPaths = jsb.fileUtils.getSearchPaths();
//             const newPaths = this.assetsManager.manager.getLocalManifest().getSearchPaths();
//             console.log(JSON.stringify(newPaths));
//             Array.prototype.unshift.apply(searchPaths, newPaths);
//             const uniquePaths = Array.from(new Set(searchPaths));
//             cc.sys.localStorage.setItem("HotUpdateSearchPaths", JSON.stringify(uniquePaths));
//             jsb.fileUtils.setSearchPaths(uniquePaths);
//         }

//         if (this.isMain) {
//             if (updateFinished) {
//                 this.assetsManager.manager.setEventCallback(null);
//                 if (event.getDownloadedFiles() > 0) {
//                     console.log(`${this.bundle} 主包更新完成，有下载文件，需要重启更新`);
//                     cc.game.restart();
//                     return;
//                 } else {
//                     console.log(`${this.bundle} 主包更新完成，写入远程版本信息到本地`);
//                     jsb.fileUtils.purgeCachedEntries();
//                     Manager.updateManager.rest_Assets_Manager(this.updateName);
//                 }
//             }
//         } else if (updateFinished) {
//             console.log(`${this.bundle} 下载资源数: ${event.getDownloadedFiles()}`);
//             jsb.fileUtils.purgeCachedEntries();
//             Manager.updateManager.rest_Assets_Manager(this.updateName);
//         }

//         if (this.assetsManager.code !== $update.AL_Framework_Update.Code.UPDATE_PROGRESSION) {
//             this.isUpdating = false;
//         }

//         const downloadProgress = {
//             downloadedBytes: event.getDownloadedBytes(),
//             totalBytes: event.getTotalBytes(),
//             downloadedFiles: event.getDownloadedFiles(),
//             totalFiles: event.getTotalFiles(),
//             percent: event.getPercent(),
//             percentByFile: event.getPercentByFile(),
//             code: event.getEventCode(),
//             state: this.assetsManager.manager.getState(),
//             needRestart: updateFinished,
//             bundle: this.bundle,
//             assetId: event.getAssetId(),
//             progress: 0
//         };

//         // Handle progress
//         switch (downloadProgress.code) {
//             case $update.AL_Framework_Update.Code.UPDATE_FINISHED:
//                 downloadProgress.progress = 1.1;
//                 break;
//             case $update.AL_Framework_Update.Code.UPDATE_PROGRESSION:
//                 downloadProgress.progress = isNaN(downloadProgress.percent) ? 0 : downloadProgress.percent;
//                 break;
//             case $update.AL_Framework_Update.Code.ALREADY_UP_TO_DATE:
//                 downloadProgress.progress = 1;
//                 break;
//             default:
//                 if ([
//                     $update.AL_Framework_Update.Code.UPDATE_FAILED,
//                     $update.AL_Framework_Update.Code.ERROR_NO_LOCAL_MANIFEST,
//                     $update.AL_Framework_Update.Code.ERROR_DOWNLOAD_MANIFEST,
//                     $update.AL_Framework_Update.Code.ERROR_PARSE_MANIFEST,
//                     $update.AL_Framework_Update.Code.ERROR_DECOMPRESS
//                 ].includes(downloadProgress.code)) {
//                     downloadProgress.progress = -1;
//                     console.log(`更新${this.name}失败`);
//                     this.handler.on_Update_Failed(this);
//                 }
//                 break;
//         }

//         if (updateFinished && !needRestart) {
//             this.handler.on_Download_Complete(this);
//             console.log(`更新${this.name}成功`);
//         }

//         console.log(`${this.bundle} update cb failed: ${needRestart}, isRestartApp: ${needRestart} isUpdateFinished: ${updateFinished}, updating: ${this.isUpdating}`);
//     }
// }
// exports.AL_Framework_Update_Item = AL_Framework_Update_Item;
